---
title: Manual installation
description: How to install Hollo manually.
---

import { Aside } from "@astrojs/starlight/components";

Hollo can be installed manually on your server.  This guide will walk you
through the process of setting up Hollo on your server.  It assumes you have
some experience with running web applications and are comfortable with the
command line.

<Aside type="tip">
  If you are not comfortable with Unix-like systems or prefer a more automated
  way to deploy Hollo, you can use [Railway] to deploy Hollo with just a few
  clicks.

  [Railway]: /install/railway
</Aside>


Prerequisites
-------------

Before you start, make sure you have the following software installed on your
server:

 -  [Git]
 -  [Node.js] 24+
 -  [pnpm]
 -  [ffmpeg]
 -  [PostgreSQL] 17+
 -  L7 load balancer (e.g., [nginx], [Caddy])
 -  A domain name pointing to your server

[Git]: https://git-scm.com/
[Node.js]: https://nodejs.org/
[pnpm]: https://pnpm.io/
[ffmpeg]: https://www.ffmpeg.org/
[PostgreSQL]: https://www.postgresql.org/
[nginx]: https://nginx.org/
[Caddy]: https://caddyserver.com/


Installation
------------

import { Steps } from "@astrojs/starlight/components";

<Steps>
 1. Check out Hollo's latest code from [GitHub]:

    ~~~~ sh frame="none"
    git clone -b stable https://github.com/fedify-dev/hollo.git
    cd hollo/
    ~~~~

 2. Install the dependencies using pnpm:

    ~~~~ sh frame="none"
    pnpm install
    ~~~~

 3. Create a PostgreSQL user and database for Hollo:

    ~~~~ sh frame="none"
    createuser --createdb --pwprompt hollo
    createdb --username=hollo --encoding=utf8 --template=postgres hollo
    ~~~~

 4. Create a configuration file for Hollo:

    ~~~~ sh frame="none"
    cp .env.sample .env
    ~~~~

[GitHub]: https://github.com/fedify-dev/hollo
</Steps>


Configuration
-------------

Once you've installed Hollo, you need to configure it.  Open the *.env* file
you created earlier and adjust the environment variables.

See the [*Environment variables*](/install/env) chapter for details on how to configure
Hollo.


Starting the server
-------------------

To start the server, run the following command:

~~~~ sh frame="none"
pnpm run prod
~~~~


Upgrading Hollo
---------------

To upgrade Hollo, just pull the latest code from GitHub and reinstall the
dependencies:

<Steps>
 1. Pull the latest code from GitHub:

    ~~~~ sh frame="none"
    git pull
    ~~~~

 2. Reinstall the dependencies:

    ~~~~ sh frame="none"
    pnpm install
    ~~~~

 3. Restart the server:

    ~~~~ sh frame="none"
    pnpm run prod
    ~~~~
</Steps>
